class Student:
    def __init__(self,name,age,subject,gender,passwords):
        self.name=name
        self.__age=age
        self.subject=subject
        self.gender=gender
        self.password=passwords
        self.visit_times=0
    #老老实实__init__,不然会被警告的
    def share_info(self):
        print(f'名称为{self.name}')
        print(f'年龄为{self.__age}')
        print(f'性别是:{self.gender}')
        print(f'学习科目:{self.subject}')
        self.visit_times+=1
    def study(self):
        pass#如果写pass跳过，表示没有内容
    def play_games(self,name):
        pass
class RollingKing(Student):
    def __init__(self,name,age,subject,gender,passwords):
        super().__init__(name,age,subject,gender,passwords)
    def study(self):
        print('偶遇强大卷怪，狂卷一切如同怪物，拼尽全力无法战胜')
    def play_games(self,name):
        print('{}打游戏也是卷不过的存在捏'.format(name))
    def sleep(self,hours):
        print(f'{self.name},你又在卷哦，一天睡{hours}个小时，休息一下吧')
class WiseKing(Student):
    def __init__(self,name,age,subject,gender,passwords):
        super().__init__(name,age,subject,gender,passwords)
    def study(self):
        print('天赋型选手{},学习什么的肯定是轻轻松松吧'.format(self.name))
    def play_games(self,name):
        print('原神，启动')#先叠甲，本人其实不玩原，也不会对一切关于原的言论负责（如果有的话）
#创建一个人的账号和密码
def create():
    name=input('请输入你的姓名')
    keywords=input('请设置你的密码')
    while len(keywords)<=6:
        keywords=input('密码位数过短，请重新设置')
    print('创建成功！')
    return name,keywords
#myname,password=create()
#me=Student(myname,19,'计算概论（A）','m',password)
#if __name__=='__main__':
#    print(me)#<__main__.Student object at 0x000002678E3A6900>
#    print(type(me))#<class '__main__.Student'>
#    print(me.name)#uni
'''
#可以直接添加一个内部没有的属性
me.walk='walker'
print(me.walk)#walker
'''
'''
论类方法和静态方法
类方法：不需要借助对象，可以直接使用类名引用的方法，需要使用@classmethod装饰器
'''
#实例：
class Person:
    registered_nums=0
    def __init__(self,name):
        self.name=name
        Person.registered_nums+=1
    @classmethod
    def show_info(cls):
        print('共计注册人数为{}人'.format(Person.registered_nums))
Tom=Person('Tom')
Amy=Person('Amy')
Person.show_info()#共计注册人数为2人
'''
个人认为的几个注意事项：
1）需要使用类名引用相关属性和方法
2）注意装饰器@classmethod
'''
'''
静态方法：定义在类的内部的一个普通函数
'''

#实例：
import a1
'''
class Calculater:
    @staticmethod
    @a1.date_calculater
    def add(x,y):
        return x+y
    @staticmethod
    @a1.date_calculater
    def multiple(x,y):
        return x*y
    @staticmethod
    @a1.date_calculater
    def division(x,y):
        return x/y
    @staticmethod
    @a1.date_calculater
    def minus(x,y):
        return x-y
print('计算出结果为：',Calculater.add(int(input('请输入第一个数字')),int(input('请输入第二个数字'))))
'''
#顺便研究一下斐波那契数列的计算速度
@a1.date_calculater
def f(n):
    list1=[0,1]
    if n==1:
        return [0]
    elif n>=3:
        for i in range(2,n):
            list1.append(list1[i-1]+list1[i-2])
    return list1
n1=int(input('输入需要求的斐波那契数列前n项'))
print('前{}项的值为：{}'.format(n1,f(n1)))
#事实证明：计算的速度相当快，使用秒为单位求运行时长暂时没有意义
#综上